home *** CD-ROM | disk | FTP | other *** search
- CHOP
- Version 3.0
-
- Author: Walter J. Kennamer Compuserve PPN: 74025,514
-
-
- CHOP breaks big files into smaller ones. A number of options are
- supported to determine exactly where the breaks take place. This
- version also allows you to extract a portion of a file.
-
- More information about CHOP follows; but first, a word from my lawyers:
-
- ------------------------------------------------------------------------------
- Copyright (c) 1986, 1987 Walter J. Kennamer. All Rights Reserved.
-
- You are free to use, copy and distribute CHOP providing that:
-
- NO FEE IS CHARGED FOR USE, COPYING OR DISTRIBUTION.
-
- IT IS NOT MODIFIED IN ANY WAY.
-
- THIS DOCUMENTATION FILE (UNMODIFIED) ACCOMPANIES ALL COPIES.
-
- This program is provided AS IS without any warranty, expressed or
- implied, including but not limited to fitness for a particular purpose.
-
- ------------------------------------------------------------------------------
-
-
- Usage:
- A>CHOP infile [-switches]
-
- "Infile" is a unambiguous file name (i.e., no wildcards are allowed).
- The original input file will be unchanged. The output files will have
- the same stem as the input file, but the extension will be numbered
- consecutively from 1. For example, if you break FOO.BAR into three
- smaller files, FOO.BAR will be unchanged, and there will be three
- output files--FOO.1, FOO.2 and FOO.3.
-
- Each switch requires a separate switch character (e.g., "-a -b" rather
- than "-ab"). Switch order does not matter, unless you enter mutually-
- exclusive switches, in which case the last one takes precedence.
-
- Type CHOP by itself to see help.
-
-
- ==============================
- Command line options:
- ==============================
-
- This table summarizes command line options. Options can be preceded
- by a hyphen(-) or a slash(/) and can be upper or lower case.
-
- These options determine how much of the file will be output
-
- -Bx Beginning byte to extract (default = 1).
- -Ex Ending byte to extract (default = end of file).
-
- These options determine how the file will be partitioned. They
- are mutually exclusive.
-
- -Px Chop file into x pieces (default = 2).
- -Sxxx Chop file into xxx-sized pieces.
-
- These options determine where the data comes from and where it goes.
-
- -Ifilename Read input from "filename".
- -Odirectory Send output to "directory".
- -T Trample over existing files.
-
- These options determine if the break will occur at a precise byte or at a
- set of characters near the computed boundary. -R and -X are mutually
- exclusive. -N, -A, -H, -L, -C and -W have no meaning if -X is selected.
- -R is the default option. The term "return character(s)" means the
- character(s) that determine where the file will be chopped.
-
- -R Try to chop at a "return" character (default is CR/LF).
- -Nfoo Define a sequence of "return" characters (e.g.,"foo").
- -A Chop after the "return" characters (default).
- -H Chop before the "return" characters.
- -Lxxx Limit search for "return" characters to xxx bytes.
- -C Make "return" characters case sensitive.
- -W Chop at each occurrence of the "return" string.
- -X Chop at the exact computed byte.
-
- -Mxxx Define the maximum number of chops (default = 256).
- -Gxxx Start output file numbering with xxx.
- -Q Quiet. Do not show program status on screen.
- -Z Do not insert a Ctrl-Z EOF at end of each output file.
-
-
- ==============================
- Terminology and other notes:
- ==============================
-
- The term "computed break point" means the place in the file where the
- split would normally occur, if CHOP was not doing something special
- about return characters. For example, if you have a file of 100,000
- bytes that is being split into 5 parts, the computed break points are
- at these bytes:
- 20,000
- 40,000
- 60,000
- 80,000
- You can force the breaks to occur exactly at these points by using the
- -X (exact) switch on the command line. Or, you can let CHOP try to
- find a logical breaking point in the file (normally a carriage return /
- line feed).
-
- The term "return string" or "return characters" means the sequence of
- one or more characters that defines a newline, or some other
- interesting boundary in the file. CHOP assumes that you would prefer
- to split the file at a natural boundary, rather than just someplace in
- the middle. By default, CHOP assumes the break should occur at a
- carriage return / line feed character sequence (CR LF -- Hex 0D 0A).
- Thus, if CHOP plans to break the file at the 1000th byte, it will
- actually look a little ahead of byte 1000 to try to find a newline (CR
- LF) and split it there, rather than at byte 1000.
-
- You can redefine the return string to be something else. For example,
- Compuserve messages begin with the "#:" character sequence. By
- defining this sequence as the return string, you instruct CHOP to split
- the file only between messages--no message would be split across CHOP
- output files. You would define "#:" as the return string by using the
- switch "-n#:" on the command line (see examples).
-
- CHOP ordinarily splits a file after the return string. You can make
- the split happen before the return string by using the -h switch. You
- would probably want to use this switch in the preceding Compuserve
- example since the "#:" characters mark the beginning of a message. You
- would probably want them to be the first characters in a new file,
- rather than the last characters in the preceding file.
-
- You can also limit how far CHOP is willing to search for the return
- string. The -L parameter determines how many bytes forward of the
- computed break point CHOP looks for the return. The default is 1000
- bytes. If it cannot find the return string within the number of bytes
- specified with -L, CHOP breaks the file at the computed point. CHOP
- never breaks a file before the computed point. As a consequence, the
- last CHOP output file will typically be a little smaller than the
- earlier ones: the differences between the computed break points and
- the actual return boundaries mount up.
-
- The first byte of a file is byte 0 or byte 1. The second byte is always
- byte 2. In other words, CHOP always counts from 1. if you specify byte
- 0, it assumes you mean the beginning byte.
-
- CHOP will ordinarily decline to overwrite any existing files, but will
- display a message and halt instead. If you want to trample over
- existing files (I had to use "trample"--T was the only letter left),
- use the -t switch on the command line. If -t is specified, CHOP will
- write over any files that get in its way.
-
- Use the -g switch to change the beginning file number. For example, if
- you want to chop FOO.BAR into several pieces, but you want the first
- one to be numbered FOO.8, use the -g8 switch to set the starting
- number.
-
-
- ==============================
- Examples:
- ==============================
-
- CHOP foo.bar
-
- chops FOO.BAR into two pieces, FOO.1 and FOO.2. If you do not use either
- the -P or -S switches, CHOP assumes you want to split the file into two
- pieces.
-
-
- CHOP foo.bat -p5
-
- chops the foo.bat program into five files of approximately equal size.
- The breaks take place after a CR/LF pair.
-
-
- CHOP foo.bat -s2000 -x
-
- chops foo.bat into 2000-byte pieces. The first chop occurs exactly at
- byte 2000. Note that the output file will actually have 2001 bytes,
- counting the control-Z added to the file (though you can suppress it
- with the -z switch).
-
-
- CHOP foo.bat -e2000
-
- copies the first 2000 bytes of foo.bat to FOO.1. By default, copying
- begins at the first byte of the file.
-
-
- CHOP foo.bat -e2000 -p2
-
- puts the first 2000 bytes of foo.bat into 2 files of about 1000 bytes each.
-
-
- CHOP foo.bat -b3000 -e3999 -p2 -r
-
- puts the 1000 bytes in foo.bat between byte 3000 and 3999 into 2 files.
- The chop will occur at the first CR/LF pair after byte 3500.
-
-
- CHOP foo.bat -s20000 -nMSG: -oD:\CHOPOUT -g5 -c
-
- chops foo.bat into pieces of approximately 20,000 bytes. The first chop
- will occur immediately after the first occurrence of the string "MSG:"
- (case sensitive because of -c) after byte 20000. The output files will be
- D:\CHOPOUT\FOO.5, FOO.6, etc.
-
-
- CHOP -id:\pdq\cserv.thd -p10 -n#: -h -l2000
-
- chops d:\pdq\cserv.thd into about 10 pieces, with the breaks occurring
- immediately before the character string "#:" (used by Compuserve forum
- software to designate a new message). CHOP will search up to 2000 bytes
- past the computed break point for the "#:" string. If it cannot find
- "#:" within 2000 bytes, it will give up and break at the computed point.
-
-
- CHOP cserv.thd -h -n#: -w -t
-
- chops cserv.thd into many files--one for each occurrence of the "#:"
- string. The -w switch implies an unlimited search limit and overrides
- the -P, -S and -X switches. Overwrite any files (CSERV.1, CSERV.2,
- etc.) that are already there.
-
-
- CHOP program.pas -nPROCEDURE -w -h
-
- chops the program.pas Pascal file into many files--one for each
- procedure. After executing this command, each of the procedures in
- "program.pas" will be in a separate file.
-
-
- CHOP foo.bar -n$0C -p3
-
- This example shows how to put hex codes in the "return" string. The
- codes must be exactly two digits (i.e., precede single digit hex codes
- with a 0) and must be preceded by a dollar sign. This example causes
- foo.bar to be chopped into three pieces, with the chop taking place at a
- hex 0C character (ASCII decimal 12, or formfeed).
-
-
- FOR %1 in (*.TXT) DO CHOP %1 -p4
-
- This example illustrates how to use the batch FOR command to CHOP a
- series of files as specified by the wildcard (*.TXT). In this case,
- each .TXT file will be chopped into four pieces of approximately equal
- size.
-
-
- ==============================
- Rejoining Chopped Files
- ==============================
-
- You can use the DOS copy command to rejoin chopped files. For example,
- this command rejoins two text files--FOO.1 and FOO.2--to recreate the
- original FOO.BAR file.
-
- COPY FOO.1/a+FOO.2 FOO.BAR
-
- If FOO.BAR, FOO.1 and FOO.2 are binary files, use the /b switch with the
- COPY command:
-
- COPY FOO.1/b+FOO.2 FOO.BAR
-
- The /b switch causes DOS to treat control-Z characters as legitimate
- data (instead of EOF marks) when the files are joined.
-
- ==============================
- Support
- ==============================
-
- If you have any problems with CHOP or any suggestions about how to
- improve it, please contact me on Compuserve (PPN 74025,514) or write to
- me at 1801 E. 12th., Apt 1118, Cleveland, OH 44114.
-